package edu.mercer.sse.plainpdf;

import java.net.URI;

/**
 * File Document.<p>
 * 
 * Limited set of exposed and validated attributes. Information required for 
 * 	processing of file; i.e. PDF.<p>  
 * 
 * File used in PDF conversion. Examples: TIFF, PDF files.<p>
 *
 */

public interface FileInformation
{
	/**
	 * Determine if file is readable, within accepted size and other criteria.
	 * <p>
	 * 
	 * @return  Boolean true is file is accessible and within ranges for size, 
	 * 	path length
	 */
	
	Boolean isAvailable();
	
	
	/**
	 * Get file path.<p>
	 * 
	 * Path may be empty; i.e., current folder. Does not include file name.<p>
	 * 
	 * @return  String file path
	 */
	
	String getPath();
	
	
	/**
	 * Get file name.<p>
	 * 
	 * Does not include path.<p>
	 * 
	 * @return  String file name
	 */
	
	String getName();

	
	/**
	 * Get file path and name.<p>
	 * 
	 * Convenience method. Result is the same as {@link #getPath()} + 
	 * 	{@link #getName()}<p>
	 * 
	 * @return  String file path and name
	 */
	
	String getLocation();
	
	
	/**
	 * Get file size.<p>
	 * 
	 * @return  Long file size in bytes
	 */
	
	Long getSize();

	
	/**
	 * Get file URI.<p>
	 * 
	 * @return  URI file path and name as URI
	 */
	
	URI getURI();

	
	/**
	 * Retrieve mime type information.<p>
	 * 
	 * Recommend: Apache Tika.<p>
	 * 
	 * @return  String containing mime type
	 */
	
	String getMimeType();
	
	
}//interface
